package part15;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * @author wcj
 * @Date 2021/5/29 18:49
 * @Version 1.0
 */
public class Part1518<T> {

    private Class<T> kind;

    public Part1518(Class<T> kind) {
        this.kind = kind;
    }

    public T[] create(int size) {
        // 泛型中使用数组，推荐使用Array.newInstance()
        return (T[]) Array.newInstance(kind, size);
    }

    /**
     * 泛型的缺陷：使用类型操作的时候一定需要注意，永远不要把泛型当作具体类型处理
     * 要把泛型当作Object处理
     * 擦除动作发生在边界处
     *
     * @param args
     */
    public static void main(String[] args) {
        Part1518<Integer> stringPart1518 = new Part1518<>(Integer.class);
        Integer[] integers = stringPart1518.create(9);
        System.out.println(Arrays.toString(integers));
    }
}
